﻿/*
 * Created by SharpDevelop.
 * User: edu
 * Date: 31/10/2011
 * Time: 02:27 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.Data;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Security.Permissions;
using System.Windows.Forms;

using Business_Entity;


namespace DAOFactory
{
	/// <summary>
	/// Description of DAOMascota.
	/// </summary>
	public class DAOMascota
	{
		public DAOMascota()
		{
		}			
		
		public int obtenerIDClienteNombre(){
			
			int valor = 0;
			SqlDataReader amd = null;			
			
			try{
				SqlCommand cmd = new SqlCommand("VENTAS_OBTENER_IDCLIENTE_NOMBRE_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
					
				amd = cmd.ExecuteReader();				
				
				if (amd.HasRows) 
				{					
					
					while(amd.Read())
					{											
						valor = Convert.ToInt16(amd[0]);				
					}					
										
				}				
			}
			catch(Exception ex)
			{
				System.Windows.Forms.MessageBox.Show(ex.ToString(),"Error");				
			}
			
			if (amd != null)
				amd.Close();
			return valor;
			
		}
		
		public List<BEMascota> obtenerListaMascotas(BECliente beCliente)
		{
			//MessageBox.Show(beCliente.IdCliente.ToString());
			object estadoTran = null;
			List<BEMascota> lista = new List<BEMascota>();
			SqlDataReader amd = null;			
			
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCARTOTAL_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
							
				cmd.Parameters.Add("@IDCLIENTE", SqlDbType.Int);
				if(beCliente.IdCliente == -1)
					cmd.Parameters["@IDCLIENTE"].Value = -1;
				else
					cmd.Parameters["@IDCLIENTE"].Value = beCliente.IdCliente;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;						
				
				amd = cmd.ExecuteReader();	
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;													
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
						BEMascota mascota = new BEMascota();							
						mascota.Id = int.Parse(amd[0].ToString());
						mascota.Nombre = amd[1].ToString();
						mascota.Talla = float.Parse(amd[2].ToString());
						mascota.Peso = float.Parse(amd[3].ToString());
						mascota.FechaNacimiento = Convert.ToDateTime(amd[4].ToString());
						mascota.Estado = Convert.ToChar(amd[5].ToString());
						mascota.Descripcion = amd[6].ToString();
						mascota.Genero = Convert.ToChar(amd[7].ToString());
						mascota.BeRaza = new BERaza();												
						mascota.BeRaza.IdRaza = int.Parse(amd[8].ToString());
						mascota.BeRaza.Descripcion = amd[9].ToString();
						mascota.BeRaza.BeEspecie = new BEEspecie();
						mascota.BeRaza.BeEspecie.IdEspecie = int.Parse(amd[10].ToString());
						mascota.BeRaza.BeEspecie.Descripcion = amd[11].ToString();	
						mascota.BuscaPareja = Convert.ToChar(amd[12].ToString());
						mascota.Disponible = Convert.ToChar(amd[13].ToString());
						mascota.MismaRaza = Convert.ToChar(amd[14].ToString());
						mascota.OtraEspecie = amd[15].ToString();
						mascota.OtraRaza = amd[16].ToString();
						mascota.Dueno = beCliente;												
																
						lista.Add(mascota);
					}
				}
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			if (amd != null)
				amd.Close();
			return lista;
			
		}
		
		public int eliminarMascota(BEMascota beMascota)
		{
			int estadoTran = 0;
			
			try 
			{
				SqlCommand cmd = new SqlCommand("VENTAS_ELIMINAR_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDMASCOTA", SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA"].Value = beMascota.IdMascota;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return estadoTran;
		}
		
		public int insertarNuevaMascota(BEMascota mascota)
		{
				
			int estadoTran = 0;
			FileStream flujoArch = null;
			BinaryReader binarioRDR = null;
			
			try {								
				
				SqlCommand cmd = new SqlCommand("VENTAS_REGISTRAR_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;							
				
				//INFOR PERSONAL				
				cmd.Parameters.Add("@NOMBRE", SqlDbType.VarChar, 40);
				cmd.Parameters["@NOMBRE"].Value = mascota.Nombre;								
					
				cmd.Parameters.Add("@TALLA", SqlDbType.Float);
				cmd.Parameters["@TALLA"].Value = mascota.Talla;
				
				cmd.Parameters.Add("@PESO", SqlDbType.Float);
				cmd.Parameters["@PESO"].Value = mascota.Peso;
				
				cmd.Parameters.Add("@FECNACIMIENTO", SqlDbType.DateTime);
				cmd.Parameters["@FECNACIMIENTO"].Value = mascota.FechaNacimiento;				
				
				cmd.Parameters.Add("@IDRAZA", SqlDbType.Int);
				cmd.Parameters["@IDRAZA"].Value = mascota.BeRaza.IdRaza;
				
				cmd.Parameters.Add("@ESTADO", 	SqlDbType.Char,1);
				cmd.Parameters["@ESTADO"].Value = mascota.Estado;
				
				cmd.Parameters.Add("@DESCRIPCION", SqlDbType.VarChar, 500);
				cmd.Parameters["@DESCRIPCION"].Value = mascota.Descripcion;
				
				cmd.Parameters.Add("@IDCLIENTE",SqlDbType.Int);
				cmd.Parameters["@IDCLIENTE"].Value = mascota.Dueno.IdCliente;
				
				cmd.Parameters.Add("@GENERO", SqlDbType.Char,1);
				cmd.Parameters["@GENERO"].Value = mascota.Genero;																				
				
				cmd.Parameters.Add("@BUSCAPAREJA", SqlDbType.Char,1);
				cmd.Parameters["@BUSCAPAREJA"].Value = mascota.BuscaPareja;	

				cmd.Parameters.Add("@DISPONIBLE", SqlDbType.Char,1);
				cmd.Parameters["@DISPONIBLE"].Value = mascota.Disponible;	
				
				cmd.Parameters.Add("@MISMARAZA", SqlDbType.Char,1);
				cmd.Parameters["@MISMARAZA"].Value = mascota.MismaRaza;	
				
				cmd.Parameters.Add("@OTRAESPECIE", SqlDbType.VarChar, 20);
				cmd.Parameters["@OTRAESPECIE"].Value = mascota.OtraEspecie;
				
				cmd.Parameters.Add("@OTRARAZA", SqlDbType.VarChar, 20);
				cmd.Parameters["@OTRARAZA"].Value = mascota.OtraRaza;
												
//				public byte[] imageToByteArray(System.Drawing.Image imageIn)
//				{
//					MemoryStream ms = new MemoryStream();
//					imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
//					return  ms.ToArray();
//				}
//				
//				flujoArch = new FileStream(mascota.Foto.RutaImagen,FileMode.Open,FileAccess.Read);
//		        binarioRDR = new BinaryReader(flujoArch);		        		      
//							        
//		        byte[] archivo = binarioRDR.ReadBytes((int)(flujoArch.Length));		        		       		        		        		        
//				
		        cmd.Parameters.Add("@FOTO",SqlDbType.Image/*, (int)(flujoArch.Length)*/);
		        cmd.Parameters["@FOTO"].Value = imageToByteArray(mascota.Foto);
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{				
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			//binarioRDR.Close();
			//flujoArch.Close();		            
			return estadoTran;	
		}
		
		public int actualizarMascota(BEMascota mascota)
		{
			int estadoTran = 0;
			FileStream flujoArch = null;
			BinaryReader binarioRDR = null;
			
			try {								
				
				SqlCommand cmd = new SqlCommand("VENTAS_ACTUALIZAR_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;							
				
				cmd.Parameters.Add("@IDMASCOTA", SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA"].Value = mascota.IdMascota;
				
				cmd.Parameters.Add("@NOMBRE", SqlDbType.VarChar, 40);
				cmd.Parameters["@NOMBRE"].Value = mascota.Nombre;								
					
				cmd.Parameters.Add("@TALLA", SqlDbType.Float);
				cmd.Parameters["@TALLA"].Value = mascota.Talla;
				
				cmd.Parameters.Add("@PESO", SqlDbType.Float);
				cmd.Parameters["@PESO"].Value = mascota.Peso;
				
				cmd.Parameters.Add("@FECNACIMIENTO", SqlDbType.DateTime);
				cmd.Parameters["@FECNACIMIENTO"].Value = mascota.FechaNacimiento;				
				
				cmd.Parameters.Add("@IDRAZA", SqlDbType.Int);
				cmd.Parameters["@IDRAZA"].Value = mascota.BeRaza.IdRaza;
				
				cmd.Parameters.Add("@ESTADO", 	SqlDbType.Char,1);
				cmd.Parameters["@ESTADO"].Value = mascota.Estado;
				
				cmd.Parameters.Add("@DESCRIPCION", SqlDbType.VarChar, 500);
				cmd.Parameters["@DESCRIPCION"].Value = mascota.Descripcion;
				
				cmd.Parameters.Add("@IDCLIENTE",SqlDbType.Int);
				cmd.Parameters["@IDCLIENTE"].Value = mascota.Dueno.IdCliente;
				
				cmd.Parameters.Add("@GENERO", SqlDbType.Char,1);
				cmd.Parameters["@GENERO"].Value = mascota.Genero;																				
				
				cmd.Parameters.Add("@BUSCAPAREJA", SqlDbType.Char,1);
				cmd.Parameters["@BUSCAPAREJA"].Value = mascota.BuscaPareja;		

			 	cmd.Parameters.Add("@DISPONIBLE", SqlDbType.Char,1);
				cmd.Parameters["@DISPONIBLE"].Value = mascota.Disponible;	
				
				cmd.Parameters.Add("@MISMARAZA", SqlDbType.Char,1);
				cmd.Parameters["@MISMARAZA"].Value = mascota.MismaRaza;	
				
				cmd.Parameters.Add("@OTRAESPECIE", SqlDbType.VarChar, 20);
				cmd.Parameters["@OTRAESPECIE"].Value = mascota.OtraEspecie;
				
				cmd.Parameters.Add("@OTRARAZA", SqlDbType.VarChar, 20);
				cmd.Parameters["@OTRARAZA"].Value = mascota.OtraRaza;
				
//				flujoArch = new FileStream(mascota.Foto.RutaImagen,FileMode.Open,FileAccess.Read);
//		        binarioRDR = new BinaryReader(flujoArch);
//							        
//		        byte[] archivo = binarioRDR.ReadBytes((int)(flujoArch.Length));		        		       		        		        		        
				
		        cmd.Parameters.Add("@FOTO",SqlDbType.Image/*, (int)(flujoArch.Length)*/);
		        cmd.Parameters["@FOTO"].Value = imageToByteArray(mascota.Foto);/*archivo;*/
								
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{				
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			//binarioRDR.Close();
			//flujoArch.Close();		       
			return estadoTran;
		}
		
		public List<BEMascota> obtenerListaParejasMascotas(BESexo sexo, BERaza raza)
		{ /*
			//MessageBox.Show(beCliente.IdCliente.ToString());
			object estadoTran = null;
			List<BEMascota> lista = new List<BEMascota>();
			SqlDataReader amd = null;			
			
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCARTOTAL_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
							
				cmd.Parameters.Add("@IDRAZA", SqlDbType.Int);
				if(beCliente.IdCliente == -1)
					cmd.Parameters["@IDRAZA"].Value = -1;
				else
					cmd.Parameters["@IDRAZA"].Value = raza.IdRaza;
				
				cmd.Parameters.Add("@IDESPECIE", SqlDbType.Int);
				if(beCliente.IdCliente == -1)
					cmd.Parameters["@IDESPECIE"].Value = -1;
				else
					cmd.Parameters["@IDESPECIE"].Value = raza.BeEspecie.IdEspecie;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;						
				
				amd = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;													
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
						BEMascota mascota = new BEMascota();							
						mascota.Id = int.Parse(amd[0].ToString());
						mascota.Nombre = amd[1].ToString();
						mascota.Talla = float.Parse(amd[2].ToString());
						mascota.Peso = float.Parse(amd[3].ToString());
						mascota.FechaNacimiento = Convert.ToDateTime(amd[4].ToString());
						mascota.Estado = Convert.ToChar(amd[5].ToString());
						mascota.Descripcion = amd[6].ToString();
						mascota.Genero = Convert.ToChar(amd[7].ToString());
						mascota.BeRaza = new BERaza();												
						mascota.BeRaza.IdRaza = int.Parse(amd[8].ToString());
						mascota.BeRaza.Descripcion = amd[9].ToString();
						mascota.BeRaza.BeEspecie = new BEEspecie();
						mascota.BeRaza.BeEspecie.IdEspecie = int.Parse(amd[10].ToString());
						mascota.BeRaza.BeEspecie.Descripcion = amd[11].ToString();	
						mascota.BuscaPareja = Convert.ToChar(amd[12].ToString());
						mascota.Foto = null; // CAMBIAR ASAP!!! amd[13].ToString()
						mascota.Dueno = beCliente;												
																
						lista.Add(mascota);
					}
				}
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			if (amd != null)
				amd.Close();
			return lista;
			*/
			return null;
		}
		
		public List<BELineaPedidoServicio> obtenerBDHistorialMascota(int id){
			List<BELineaPedidoServicio> lstPedido=new List<BELineaPedidoServicio>();
			SqlDataReader amd = null;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_HISTORIAL_MASCOTA_M", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@id", SqlDbType.Int);
				cmd.Parameters["@id"].Value = id;
				
				amd = cmd.ExecuteReader();					
				while (amd.Read()){
					BELineaPedidoServicio beLPS=new BELineaPedidoServicio();
					beLPS.Servicio=new BEServicio();
					
					beLPS.Servicio.Descripcion = amd[0].ToString();
					beLPS.Servicio.Detalle = amd[1].ToString();
					beLPS.Servicio.Tipo=new BETipoServicio();
					beLPS.Servicio.Tipo.Nombre=amd[2].ToString();
					beLPS.Tienda=new BETienda();
					beLPS.Tienda.Nombre=amd[3].ToString();
					beLPS.Empleado=new BEEmpleado();
					beLPS.Empleado.Nombre=amd[4].ToString();
					beLPS.Fecha=DateTime.Parse(amd[5].ToString());
					beLPS.Observaciones=amd[6].ToString();
					lstPedido.Add(beLPS);
				}
				amd.Close();
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return lstPedido;
			
		}
		
		public List<BEMascota> obtenerListaMascotasBuscaPareja()
		{
			//MessageBox.Show(beCliente.IdCliente.ToString());
			object estadoTran = null;
			List<BEMascota> lista = new List<BEMascota>();
			SqlDataReader amd = null;			
			
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCARTOTAL_MASCOTA_BUSCAPAREJA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;											
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;						
				
				amd = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;													
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
						BEMascota mascota = new BEMascota();							
						mascota.Id = int.Parse(amd[0].ToString());
						mascota.Nombre = amd[1].ToString();
						mascota.Talla = float.Parse(amd[2].ToString());
						mascota.Peso = float.Parse(amd[3].ToString());
						mascota.FechaNacimiento = Convert.ToDateTime(amd[4].ToString());
						mascota.Estado = Convert.ToChar(amd[5].ToString());
						mascota.Descripcion = amd[6].ToString();
						mascota.Genero = Convert.ToChar(amd[7].ToString());
						mascota.BeRaza = new BERaza();												
						mascota.BeRaza.IdRaza = int.Parse(amd[8].ToString());
						mascota.BeRaza.Descripcion = amd[9].ToString();
						mascota.BeRaza.BeEspecie = new BEEspecie();
						mascota.BeRaza.BeEspecie.IdEspecie = int.Parse(amd[10].ToString());
						mascota.BeRaza.BeEspecie.Descripcion = amd[11].ToString();	
						mascota.BuscaPareja = Convert.ToChar(amd[12].ToString());
						mascota.Disponible = Convert.ToChar(amd[13].ToString());
						mascota.MismaRaza = Convert.ToChar(amd[14].ToString());
						mascota.OtraEspecie = amd[15].ToString();
						mascota.OtraRaza = amd[16].ToString();
						mascota.Foto = null; // CAMBIAR ASAP!!! amd[17].ToString()
						//mascota.Dueno = beCliente;												
						
						BECliente cliente = new BECliente();
						cliente.IdCliente = int.Parse(amd[17].ToString());
						cliente.Nombre = amd[18].ToString();
						cliente.ApellidoPaterno = amd[19].ToString();
						cliente.ApellidoMaterno = amd[20].ToString();
						BETipoDocumento tipoDocumento = new BETipoDocumento();
						tipoDocumento.IdTipoDoc = int.Parse(amd[21].ToString());
						tipoDocumento.Descripcion = amd[22].ToString();
						cliente.BeTipoDocumento = tipoDocumento;
						cliente.DocumentoIdentidad = amd[23].ToString();
						cliente.Sexo = amd[24].ToString();
						cliente.Direccion = amd[25].ToString();
						cliente.TelefonoContacto = amd[26].ToString();
						cliente.FechaNacimiento = Convert.ToDateTime(amd[27].ToString());
						cliente.FechaCreacion = Convert.ToDateTime(amd[28].ToString());
						cliente.FechaModificacion = Convert.ToDateTime(amd[29].ToString());
						BEEstadoCliente beEstadoCliente =  new BEEstadoCliente();
						beEstadoCliente.IdEstadoCliente = int.Parse(amd[30].ToString());
						beEstadoCliente.Descripcion = amd[31].ToString();
						cliente.BeEstadoCliente = beEstadoCliente;
						BECategoriaCliente beCategoriaCliente = new BECategoriaCliente();
						beCategoriaCliente.IdCategoria = int.Parse(amd[32].ToString());
						beCategoriaCliente.Nombre = amd[33].ToString();
						cliente.BeCategoriaCliente = beCategoriaCliente;																
						
						mascota.Dueno = cliente;						
						
						lista.Add(mascota);
					}
				}
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			if (amd != null)
				amd.Close();
			return lista;
		}
		
		public List<BEMascota> obtenerListaMascotasBuscaPareja(BEMascota beMascota, DateTime fechaIni, DateTime fechaFin)
		{
			//MessageBox.Show(beCliente.IdCliente.ToString());
			object estadoTran = null;
			List<BEMascota> lista = new List<BEMascota>();
			SqlDataReader amd = null;
			SqlCommand cmd = null;
							
			try
			{
				if(fechaIni.ToShortDateString() == fechaFin.ToShortDateString()){
					cmd = new SqlCommand("VENTAS_BUSCAR_MASCOTA_BUSCAPAREJA_R", ConnectionManager.getConnection());
					cmd.CommandType = CommandType.StoredProcedure;			
				}else{
					cmd = new SqlCommand("VENTAS_BUSCAR_MASCOTA_BUSCAPAREJA_FECHA_R", ConnectionManager.getConnection());
					cmd.CommandType = CommandType.StoredProcedure;
				}
				
				cmd.Parameters.Add("@IDMASCOTA", SqlDbType.VarChar,10);
				if(beMascota.IdMascota != -1){
					//MessageBox.Show(beMascota.IdMascota+"");
					cmd.Parameters["@IDMASCOTA"].Value = beMascota.IdMascota.ToString();
				}else{
					cmd.Parameters["@IDMASCOTA"].Value = "";
				}
				
				cmd.Parameters.Add("@NOMBRE",SqlDbType.VarChar,20);
				cmd.Parameters["@NOMBRE"].Value = beMascota.Nombre;
				
				cmd.Parameters.Add("@GENERO",SqlDbType.VarChar,1);
				if(beMascota.Genero != '-')
					cmd.Parameters["@GENERO"].Value = beMascota.Genero.ToString();
				else
					cmd.Parameters["@GENERO"].Value = "";
				
				cmd.Parameters.Add("@IDRAZA",SqlDbType.VarChar,10);
				if(beMascota.BeRaza.IdRaza != -1)
					cmd.Parameters["@IDRAZA"].Value = beMascota.BeRaza.IdRaza.ToString();
				else
					cmd.Parameters["@IDRAZA"].Value = "";
				
				cmd.Parameters.Add("@IDESPECIE",SqlDbType.VarChar,10);
				if(beMascota.BeRaza.BeEspecie.IdEspecie != -1)
					cmd.Parameters["@IDESPECIE"].Value = beMascota.BeRaza.BeEspecie.IdEspecie.ToString();
				else
					cmd.Parameters["@IDESPECIE"].Value = "";
				
				if(fechaIni.ToShortDateString() != fechaFin.ToShortDateString()){
					cmd.Parameters.Add("@FECHAINI",SqlDbType.Date);
					cmd.Parameters["@FECHAINI"].Value = fechaIni.ToShortDateString();
					
					cmd.Parameters.Add("@FECHAFIN",SqlDbType.Date);
					cmd.Parameters["@FECHAFIN"].Value = fechaFin.ToShortDateString();
				}
				
				cmd.Parameters.Add("@IDCLIENTE", SqlDbType.VarChar,10);
				if(beMascota.Dueno != null){					
					cmd.Parameters["@IDCLIENTE"].Value = beMascota.Dueno.IdCliente.ToString();
				}else{
					cmd.Parameters["@IDCLIENTE"].Value = "";
				}
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;						
				
				amd = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;													
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
						BEMascota mascota = new BEMascota();							
						mascota.Id = int.Parse(amd[0].ToString());
						mascota.Nombre = amd[1].ToString();
						mascota.Talla = float.Parse(amd[2].ToString());
						mascota.Peso = float.Parse(amd[3].ToString());
						mascota.FechaNacimiento = Convert.ToDateTime(amd[4].ToString());
						mascota.Estado = Convert.ToChar(amd[5].ToString());
						mascota.Descripcion = amd[6].ToString();
						mascota.Genero = Convert.ToChar(amd[7].ToString());
						mascota.BeRaza = new BERaza();												
						mascota.BeRaza.IdRaza = int.Parse(amd[8].ToString());
						mascota.BeRaza.Descripcion = amd[9].ToString();
						mascota.BeRaza.BeEspecie = new BEEspecie();
						mascota.BeRaza.BeEspecie.IdEspecie = int.Parse(amd[10].ToString());
						mascota.BeRaza.BeEspecie.Descripcion = amd[11].ToString();	
						mascota.BuscaPareja = Convert.ToChar(amd[12].ToString());
						mascota.Disponible = Convert.ToChar(amd[13].ToString());
						mascota.MismaRaza = Convert.ToChar(amd[14].ToString());
						mascota.OtraEspecie = amd[15].ToString();
						mascota.OtraRaza = amd[16].ToString();
						mascota.Foto = null; // CAMBIAR ASAP!!! amd[17].ToString()
						//mascota.Dueno = beCliente;												
						
						//MessageBox.Show(mascota.IdMascota.ToString(), "");										
						
						BECliente cliente = new BECliente();
						cliente.IdCliente = int.Parse(amd[17].ToString());
						cliente.Nombre = amd[18].ToString();
						cliente.ApellidoPaterno = amd[19].ToString();
						cliente.ApellidoMaterno = amd[20].ToString();
						BETipoDocumento tipoDocumento = new BETipoDocumento();
						tipoDocumento.IdTipoDoc = int.Parse(amd[21].ToString());
						tipoDocumento.Descripcion = amd[22].ToString();
						cliente.BeTipoDocumento = tipoDocumento;
						cliente.DocumentoIdentidad = amd[23].ToString();
						cliente.Sexo = amd[24].ToString();
						cliente.Direccion = amd[25].ToString();
						cliente.TelefonoContacto = amd[26].ToString();
						cliente.FechaNacimiento = Convert.ToDateTime(amd[27].ToString());
						cliente.FechaCreacion = Convert.ToDateTime(amd[28].ToString());
						cliente.FechaModificacion = Convert.ToDateTime(amd[29].ToString());
						BEEstadoCliente beEstadoCliente =  new BEEstadoCliente();
						beEstadoCliente.IdEstadoCliente = int.Parse(amd[30].ToString());
						beEstadoCliente.Descripcion = amd[31].ToString();
						cliente.BeEstadoCliente = beEstadoCliente;
						BECategoriaCliente beCategoriaCliente = new BECategoriaCliente();
						beCategoriaCliente.IdCategoria = int.Parse(amd[32].ToString());
						beCategoriaCliente.Nombre = amd[33].ToString();
						cliente.BeCategoriaCliente = beCategoriaCliente;																
						
						mascota.Dueno = cliente;						
						
						lista.Add(mascota);
					}
				}
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			if (amd != null)
				amd.Close();
			return lista;
		}
		
		public List<BEMascota> obtenerListaMascotasAdopcion()
		{
						//MessageBox.Show(beCliente.IdCliente.ToString());
			object estadoTran = null;
			List<BEMascota> lista = new List<BEMascota>();
			SqlDataReader amd = null;			
			
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCARTOTAL_MASCOTA_ADOPCION_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;											
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;						
				
				amd = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;													
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
						BEMascota mascota = new BEMascota();							
						mascota.Id = int.Parse(amd[0].ToString());
						mascota.Nombre = amd[1].ToString();
						mascota.Talla = float.Parse(amd[2].ToString());
						mascota.Peso = float.Parse(amd[3].ToString());
						mascota.FechaNacimiento = Convert.ToDateTime(amd[4].ToString());
						mascota.Estado = Convert.ToChar(amd[5].ToString());
						mascota.Descripcion = amd[6].ToString();
						mascota.Genero = Convert.ToChar(amd[7].ToString());
						mascota.BeRaza = new BERaza();												
						mascota.BeRaza.IdRaza = int.Parse(amd[8].ToString());
						mascota.BeRaza.Descripcion = amd[9].ToString();
						mascota.BeRaza.BeEspecie = new BEEspecie();
						mascota.BeRaza.BeEspecie.IdEspecie = int.Parse(amd[10].ToString());
						mascota.BeRaza.BeEspecie.Descripcion = amd[11].ToString();	
						mascota.BuscaPareja = Convert.ToChar(amd[12].ToString());
						mascota.Disponible = Convert.ToChar(amd[13].ToString());
						mascota.MismaRaza = Convert.ToChar(amd[14].ToString());
						mascota.OtraEspecie = amd[15].ToString();
						mascota.OtraRaza = amd[16].ToString();
						mascota.Foto = null; // CAMBIAR ASAP!!! amd[17].ToString()
						//mascota.Dueno = beCliente;												
						
						BECliente cliente = new BECliente();
						cliente.IdCliente = int.Parse(amd[17].ToString());
						cliente.Nombre = amd[18].ToString();
						cliente.ApellidoPaterno = amd[19].ToString();
						cliente.ApellidoMaterno = amd[20].ToString();
						BETipoDocumento tipoDocumento = new BETipoDocumento();
						tipoDocumento.IdTipoDoc = int.Parse(amd[21].ToString());
						tipoDocumento.Descripcion = amd[22].ToString();
						cliente.BeTipoDocumento = tipoDocumento;
						cliente.DocumentoIdentidad = amd[23].ToString();
						cliente.Sexo = amd[24].ToString();
						cliente.Direccion = amd[25].ToString();
						cliente.TelefonoContacto = amd[26].ToString();
						cliente.FechaNacimiento = Convert.ToDateTime(amd[27].ToString());
						cliente.FechaCreacion = Convert.ToDateTime(amd[28].ToString());
						cliente.FechaModificacion = Convert.ToDateTime(amd[29].ToString());
						BEEstadoCliente beEstadoCliente =  new BEEstadoCliente();
						beEstadoCliente.IdEstadoCliente = int.Parse(amd[30].ToString());
						beEstadoCliente.Descripcion = amd[31].ToString();
						cliente.BeEstadoCliente = beEstadoCliente;
						BECategoriaCliente beCategoriaCliente = new BECategoriaCliente();
						beCategoriaCliente.IdCategoria = int.Parse(amd[32].ToString());
						beCategoriaCliente.Nombre = amd[33].ToString();
						cliente.BeCategoriaCliente = beCategoriaCliente;																
						
						mascota.Dueno = cliente;						
						
						lista.Add(mascota);
					}
				}
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			if (amd != null)
				amd.Close();
			return lista;
		}
		
		public List<BEMascota> obtenerListaMascotasAdopcion(BEMascota beMascota, DateTime fechaIni, DateTime fechaFin){
			//MessageBox.Show(beCliente.IdCliente.ToString());
			object estadoTran = null;
			List<BEMascota> lista = new List<BEMascota>();
			SqlDataReader amd = null;
			SqlCommand cmd = null;
							
			try
			{
				if(fechaIni.ToShortDateString() == fechaFin.ToShortDateString()){
					cmd = new SqlCommand("VENTAS_BUSCAR_MASCOTA_ADOPCION_R", ConnectionManager.getConnection());
					cmd.CommandType = CommandType.StoredProcedure;			
				}else{
					cmd = new SqlCommand("VENTAS_BUSCAR_MASCOTA_ADOPCION_FECHA_R", ConnectionManager.getConnection());
					cmd.CommandType = CommandType.StoredProcedure;
				}
				
				cmd.Parameters.Add("@IDMASCOTA", SqlDbType.VarChar,10);
				if(beMascota.IdMascota != -1){
					//MessageBox.Show(beMascota.IdMascota+"");
					cmd.Parameters["@IDMASCOTA"].Value = beMascota.IdMascota.ToString();
				}else{
					cmd.Parameters["@IDMASCOTA"].Value = "";
				}
				
				cmd.Parameters.Add("@NOMBRE",SqlDbType.VarChar,20);
				cmd.Parameters["@NOMBRE"].Value = beMascota.Nombre;
				
				cmd.Parameters.Add("@GENERO",SqlDbType.VarChar,1);
				if(beMascota.Genero != '-')
					cmd.Parameters["@GENERO"].Value = beMascota.Genero.ToString();
				else
					cmd.Parameters["@GENERO"].Value = "";
				
				cmd.Parameters.Add("@IDRAZA",SqlDbType.VarChar,10);
				if(beMascota.BeRaza.IdRaza != -1)
					cmd.Parameters["@IDRAZA"].Value = beMascota.BeRaza.IdRaza.ToString();
				else
					cmd.Parameters["@IDRAZA"].Value = "";
				
				cmd.Parameters.Add("@IDESPECIE",SqlDbType.VarChar,10);
				if(beMascota.BeRaza.BeEspecie.IdEspecie != -1)
					cmd.Parameters["@IDESPECIE"].Value = beMascota.BeRaza.BeEspecie.IdEspecie.ToString();
				else
					cmd.Parameters["@IDESPECIE"].Value = "";
				
				if(fechaIni.ToShortDateString() != fechaFin.ToShortDateString()){
					cmd.Parameters.Add("@FECHAINI",SqlDbType.Date);
					cmd.Parameters["@FECHAINI"].Value = fechaIni.ToShortDateString();
					
					cmd.Parameters.Add("@FECHAFIN",SqlDbType.Date);
					cmd.Parameters["@FECHAFIN"].Value = fechaFin.ToShortDateString();
				}
				
				cmd.Parameters.Add("@IDCLIENTE", SqlDbType.VarChar,10);
				if(beMascota.Dueno != null){					
					cmd.Parameters["@IDCLIENTE"].Value = beMascota.Dueno.IdCliente.ToString();
				}else{
					cmd.Parameters["@IDCLIENTE"].Value = "";
				}
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;						
				
				amd = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;													
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
						BEMascota mascota = new BEMascota();							
						mascota.Id = int.Parse(amd[0].ToString());
						mascota.Nombre = amd[1].ToString();
						mascota.Talla = float.Parse(amd[2].ToString());
						mascota.Peso = float.Parse(amd[3].ToString());
						mascota.FechaNacimiento = Convert.ToDateTime(amd[4].ToString());
						mascota.Estado = Convert.ToChar(amd[5].ToString());
						mascota.Descripcion = amd[6].ToString();
						mascota.Genero = Convert.ToChar(amd[7].ToString());
						mascota.BeRaza = new BERaza();												
						mascota.BeRaza.IdRaza = int.Parse(amd[8].ToString());
						mascota.BeRaza.Descripcion = amd[9].ToString();
						mascota.BeRaza.BeEspecie = new BEEspecie();
						mascota.BeRaza.BeEspecie.IdEspecie = int.Parse(amd[10].ToString());
						mascota.BeRaza.BeEspecie.Descripcion = amd[11].ToString();	
						mascota.BuscaPareja = Convert.ToChar(amd[12].ToString());
						mascota.Disponible = Convert.ToChar(amd[13].ToString());
						mascota.MismaRaza = Convert.ToChar(amd[14].ToString());
						mascota.OtraEspecie = amd[15].ToString();
						mascota.OtraRaza = amd[16].ToString();
						mascota.Foto = null; // CAMBIAR ASAP!!! amd[17].ToString()
						//mascota.Dueno = beCliente;												
						
						//MessageBox.Show(mascota.IdMascota.ToString(), "");										
						
						BECliente cliente = new BECliente();
						cliente.IdCliente = int.Parse(amd[17].ToString());
						cliente.Nombre = amd[18].ToString();
						cliente.ApellidoPaterno = amd[19].ToString();
						cliente.ApellidoMaterno = amd[20].ToString();
						BETipoDocumento tipoDocumento = new BETipoDocumento();
						tipoDocumento.IdTipoDoc = int.Parse(amd[21].ToString());
						tipoDocumento.Descripcion = amd[22].ToString();
						cliente.BeTipoDocumento = tipoDocumento;
						cliente.DocumentoIdentidad = amd[23].ToString();
						cliente.Sexo = amd[24].ToString();
						cliente.Direccion = amd[25].ToString();
						cliente.TelefonoContacto = amd[26].ToString();
						cliente.FechaNacimiento = Convert.ToDateTime(amd[27].ToString());
						cliente.FechaCreacion = Convert.ToDateTime(amd[28].ToString());
						cliente.FechaModificacion = Convert.ToDateTime(amd[29].ToString());
						BEEstadoCliente beEstadoCliente =  new BEEstadoCliente();
						beEstadoCliente.IdEstadoCliente = int.Parse(amd[30].ToString());
						beEstadoCliente.Descripcion = amd[31].ToString();
						cliente.BeEstadoCliente = beEstadoCliente;
						BECategoriaCliente beCategoriaCliente = new BECategoriaCliente();
						beCategoriaCliente.IdCategoria = int.Parse(amd[32].ToString());
						beCategoriaCliente.Nombre = amd[33].ToString();
						cliente.BeCategoriaCliente = beCategoriaCliente;																
						
						mascota.Dueno = cliente;						
						
						lista.Add(mascota);
					}
				}
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			if (amd != null)
				amd.Close();
			return lista;
		}
		
		public int hacerMatchMascotas(BEMascota mascota1, BEMascota mascota2)
		{
			int estadoTran = 0;
			
			try {								
				
				SqlCommand cmd = new SqlCommand("VENTAS_HACER_MATCH_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;							
				
				//INFOR PERSONAL				
				cmd.Parameters.Add("@IDMASCOTA1", SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA1"].Value = mascota1.IdMascota;
					
				cmd.Parameters.Add("@IDMASCOTA2", SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA2"].Value = mascota2.IdMascota;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{				
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return estadoTran;	
		}
		
		public int asignarDuenoMascota(BEMascota mascotaSeleccionada, BECliente clienteSeleccionado)
		{
			int estadoTran = 0;
			
			try {								
				
				SqlCommand cmd = new SqlCommand("VENTAS_ASIGNAR_DUENO_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;							
				
				//INFOR PERSONAL				
				cmd.Parameters.Add("@IDCLIENTE", SqlDbType.Int);
				cmd.Parameters["@IDCLIENTE"].Value = clienteSeleccionado.IdCliente;
					
				cmd.Parameters.Add("@IDMASCOTA", SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA"].Value = mascotaSeleccionada.IdMascota;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{				
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return estadoTran;	
		}
		
		[FileIOPermission(SecurityAction.Demand, Write = @"C:\Program Files\")]
		public Image buscarFotoMascota(BEMascota mascota)
		{
			//MessageBox.Show(beCliente.IdCliente.ToString());
			object estadoTran = null;								
			string strfn = null;
			
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_FOTO_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
							
				cmd.Parameters.Add("@IDMASCOTA", SqlDbType.Int);				
				cmd.Parameters["@IDMASCOTA"].Value = mascota.IdMascota;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;						
				
				//amd = cmd.ExecuteReader();									        
		        byte[] barrImg=(byte[])cmd.ExecuteScalar();
		        estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;																					       
		        strfn=Convert.ToString(DateTime.Now.ToFileTime());		        
		        FileStream fs=new FileStream(strfn, FileMode.CreateNew, FileAccess.Write);
		        fs.Write(barrImg,0,barrImg.Length);
		        fs.Flush();
		        fs.Close();
		        							
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			//ConnectionManager.closeConnection();
			return Image.FromFile(strfn);
			
		}
		
		public byte[] imageToByteArray(System.Drawing.Image imageIn)
		{
			MemoryStream ms = new MemoryStream();
			imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
			return  ms.ToArray();
		}
		
		public Boolean existeMascota(BEMascota mascota)
		{			
			int valor = 0;
			Object estadoTran = null;
			SqlDataReader amd = null;			
			
			try{
				SqlCommand cmd = new SqlCommand("VENTAS_EXISTE_MASCOTA_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;								
				
				cmd.Parameters.Add("@IDMASCOTA",SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA"].Value = mascota.IdMascota;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;															
												
				amd = cmd.ExecuteReader();				
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;														
				
				if (amd.HasRows) 
				{					
					
					while(amd.Read())
					{											
						valor = Convert.ToInt16(amd[0]);				
					}					
										
				}				
			}
			catch(Exception ex)
			{
				System.Windows.Forms.MessageBox.Show(ex.ToString(),"Error");				
			}
			
			if (amd != null)
				amd.Close();
			
			if(valor == 1)
				return true;
			else
				return false;

		}
		
		public Boolean existeServicioPendiente(BEMascota mascota)
		{
			int valor = 0;
			Object estadoTran = null;
			SqlDataReader amd = null;			
			
			try{
				SqlCommand cmd = new SqlCommand("VENTAS_EXISTE_SERVICIO_PENDIENTE_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;								
				
				cmd.Parameters.Add("@IDMASCOTA",SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA"].Value = mascota.IdMascota;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;															
												
				amd = cmd.ExecuteReader();				
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;														
				
				if (amd.HasRows) 
				{										
					while(amd.Read())
					{											
						valor = Convert.ToInt16(amd[0]);				
					}														
				}				
			}
			catch(Exception ex)
			{
				System.Windows.Forms.MessageBox.Show(ex.ToString(),"Error");				
			}
			
			if (amd != null)
				amd.Close();
			
			if(valor == 1)
				return true;
			else
				return false;
		}
	}
}
